package org.shop.util;

import java.math.BigInteger;
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;

/**
 * MD5加密工具类 - 实现把用户密码加密后存储在数据库中 - 从而保证用户的信息安全
 * 
 * @author Administrator
 *
 */
public class MD5Util {
	/**
	 * MD5加密
	 * @param str 明文
	 * @return 密文
	 */
	public static String encode(String str) {
		// 定义一个字节数组
		byte[] secretBytes = null;
		try {
			// 创建MD5加密算法实例
			MessageDigest md = MessageDigest.getInstance("MD5");

			// 加密字符串
			md.update(str.getBytes());

			// 获取加密后的数据
			secretBytes = md.digest();
		} catch (NoSuchAlgorithmException e) {
			throw new RuntimeException("没有md5这个算法！");
		}

		// 将加密后的数据转换为16进制数字
		String md5code = new BigInteger(1, secretBytes).toString(16);// 16进制数字

		// 如果生成数字未满32位，需要前面补0
		for (int i = 0; i < 32 - md5code.length(); i++) {
			md5code = "0" + md5code;
		}
		return md5code.toUpperCase();
	}

	/**
	 * 明文与密文的匹配
	 * @param newPasswd 明文
	 * @param oldPasswd 密文
	 * @return 是否匹配
	 */
	public static boolean equals(String newPasswd, String oldPasswd) {
		return encode(newPasswd).equalsIgnoreCase(oldPasswd) ? true : false;
	}

	
}
